package com.zz.inventory.mapper;

import java.util.List;
import com.zz.inventory.domain.Classes;
import com.zz.inventory.domain.SchoolStudentCountDTO;
import org.apache.ibatis.annotations.Param;

/**
 * 班级管理Mapper接口
 * 
 * @author ruoyi
 * @date 2025-07-03
 */
public interface ClassesMapper
{
    /**
     * 查询班级管理
     * 
     * @param classId 班级管理主键
     * @return 班级管理
     */
    public Classes selectClassesByClassId(Long classId);

    /**
     * 查询班级管理列表
     * 
     * @param classes 班级管理
     * @return 班级管理集合
     */
    public List<Classes> selectClassesList(Classes classes);

    /**
     * 新增班级管理
     * 
     * @param classes 班级管理
     * @return 结果
     */
    public int insertClasses(Classes classes);

    /**
     * 修改班级管理
     * 
     * @param classes 班级管理
     * @return 结果
     */
    public int updateClasses(Classes classes);

    /**
     * 删除班级管理
     * 
     * @param classId 班级管理主键
     * @return 结果
     */
    public int deleteClassesByClassId(Long classId);

    /**
     * 批量删除班级管理
     * 
     * @param classIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteClassesByClassIds(Long[] classIds);
    /**
     * 检查学校 ID 是否存在
     *
     * @param schoolId 学校 ID
     * @return 存在返回 1，不存在返回 0
     */
    public int checkSchoolIdExists(Long schoolId);
    /**
     * 统计每个学校的学生人数在删除的时候判断是否还有学生
     * @return 学校ID、名称、学生人数列表
     */
    List<SchoolStudentCountDTO> selectSchoolStudentCount();
    int countStudentsByClassId(Long schoolId);
    /**
     * 检查班级名称是否已存在
     * @param schoolId 学校ID
     * @param className 班级名称
     * @return 存在返回>0，不存在返回0
     */
    int checkClassNameExists(@Param("schoolId") Long schoolId, @Param("className") String className);
}
